A well-designed and highly intuitive user interface can be the difference between a successful product and an unsuccessful one. Because of its market importance, much planning and extensive development is expended not only in the initial design and development of the user interface, but also in the repetitive modifications and refinements to the user interface which occur while testing the software. Consequently, the user interface can be a relatively expensive portion of the overall software product.
Many software products are sold internationally. Readying a product for release in another country typically requires modifying the user interface, since a user interface designed for use in a country in which one particular language is predominately used will typically be unsuitable for use in another country in which another language is predominately used. The process of converting a user interface for use in different countries is referred to as "internationalization." Since software products are frequently released in many different countries, the modifications to the user interface which are necessary to internationalize the product for the various countries can be relatively expensive.
Some software products and operating systems, such as the MICROSOFT WINDOWS operating system, provide features, such as resource files, which can be used in conjunction with certain software development languages, such as C++ to help address such internationalization issues. However, resource files are not universally available in all development languages, and in fact, are not offered in the JAVA language, which is one of the most popular programming languages. Resource files also suffer from many disadvantages. The development environments which generate user interfaces which rely on resource file capabilities do so by marking the application program with `marker` characters which, if accidentally disturbed by a developer editing the application, will cause the program to cease working. Further, resource files have no object oriented characteristics, and thus cannot leverage the advantages of object oriented languages, such as inheritance, encapsulation and polymorphism. In view of the importance and widespread acceptance of object oriented programming languages, this limitation is highly undesirable. Moreover, in most conventional development environments, the code necessary to implement the user interface is intermixed and intertwined with the code which implements the functionality of the program. For both development and maintenance reasons, it would be preferable if the code to implement the user interface could be encapsulated from the remainder of the program.
The JAVA programming language has become increasingly popular over the last several years because of its write-once run-anywhere portability. JAVA is used not only for creating programs, or applets, which execute over a network, but also for stand-alone applications. Another reason for JAVA's popularity is its close adherence to true object oriented programming philosophy, and the elimination from the language of certain programming constructs, such as pointers, which can cause bugs in the software which are very difficult to locate.
Internationalization becomes a very important issue with regard to JAVA's ability to create program applets which automatically download across a network upon access of a World Wide Web page. The nature of an Internet WEB page is that it can be accessed by anyone in the world having access to the Internet. JAVA applets capable of providing only a single user interface in one language are essentially useless to individuals not conversant in that language. For commercial ventures, shutting out a large number of potential customers due to language barriers is undesirable.
From the foregoing, it is apparent that a method and system which enables the rapid generation of user interfaces in multiple languages, which isolate the user interfaces into one or more separate classes, and which generate user interfaces that are operative to be used in an object oriented programming language would be highly desirable.